package com.lonely.fx;

import javafx.application.Application;
import javafx.stage.Modality;
import javafx.stage.Stage;

/**
 * @date: 2022-06-16 13:25
 * @author: ztkj-hzb
 * @description: 窗口模态设置
 **/
public class StageModeSettingMain extends Application {

    public static void main(String[] args) {
        launch(args);
    }


    /**
     *
     */
    @Override
    public void start(Stage primaryStage) throws Exception {
        //定义阻止事件传递到任何其他应用程序窗口的模式窗口
        //使用场景即：启动了多个窗口，有一个窗口是主窗口，除非关闭，不然不能点击其他窗口
        //applicationModel();


        //定义阻止事件传递到其整个所有者窗口层次结构的模式窗口。 注意：模态设置为 WINDOW_MODAL 但其所有者为空的 Stage 被视为其模态设置为 NONE
        //注意，这种模式一定要定义该窗口的所有者
        windowModel();
    }


    /**
     * application_model
     */
    private void applicationModel() {

        Stage stage1 = new Stage();
        stage1.setTitle("窗口1");
        stage1.show();

        Stage stage2 = new Stage();
        stage2.setTitle("窗口2");
        stage2.show();

        Stage stage3 = new Stage();
        stage3.setTitle("窗口3");

        //设置模态--定义阻止事件传递到任何其他应用程序窗口的模式窗口
        stage3.initModality(Modality.APPLICATION_MODAL);

        stage3.show();

    }


    /**
     * window_model 学习
     */
    public void windowModel() {


        Stage stage1 = new Stage();
        stage1.setTitle("窗口1");
        stage1.show();

        Stage stage2 = new Stage();
        stage2.setTitle("窗口2");
        stage2.show();

        Stage stage3 = new Stage();
        stage3.setTitle("窗口3");

        //设置模态--定义阻止事件传递到其整个所有者窗口层次结构的模式窗口。 注意：模态设置为 WINDOW_MODAL 但其所有者为空的 Stage 被视为其模态设置为 NONE
        stage3.initOwner(stage2);
        stage3.initModality(Modality.WINDOW_MODAL);

        stage3.show();


    }

}
